<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 封装函数,实现深拷贝
        function Copy(obj) {
            // 如果对象里面包含数组，那就不能直接写{} 需写成没有数组，在是{}
            var obj1 = Array.isArray(obj) ? [] : {}
             //  循环遍历( 思路: 循环遍历其中一个对象的每个属性, 将对象的每个属性和属性的值添加到另一个对象中 )
             // 用forin来完成 key是属性名
            for(var key in obj) { 
                //判断key属性的值是否是引用类型, 如果是, 则需要继续循环遍历处理该属性的值( 递归处理该属性的值 )
                if (typeof obj[key]=='object'){
                    // 递归处理
                    obj1[key]=Copyobj(obj[key])
                }else{
                    // 直接拷贝
                    obj1[key]=obj[key]
                }
            }
            return obj1
        }
        Copy({name:'小王',age:18,sex:true})
        var obj1= Copy({name:'小王',age:18,sex:true})
        console.log(obj1);
    </script>
</body>
</html>